<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>

/* 
1:实现深拷贝的方法 JSON方法实现
    我们一般用来深拷贝，其过程说白了 就是利用JSON.stringify 将js对象序列化（JSON字符串），
    再使用JSON.parse来反序列化(还原)js对象；序列化的作用是存储(对象本身存储的只是一个地址映射，
2:JSON.stringify和json.parse实现深拷贝会有什么问题？
   1、如果obj里面有时间对象，则JSON.stringify后再JSON.parse的结果，时间将只是字符串的形式。而不是时间对象；     
   2、如果obj里有RegExp、Error对象，则序列化的结果将只得到空对象；
   3、如果obj里有函数，undefined，则序列化的结果会把函数或 undefined丢失
   4、如果obj里有NaN、Infinity和-Infinity，则序列化的结果会变成null
   5、JSON.stringify()只能序列化对象的可枚举的自有属性，例如 如果obj中的对象是有构造函数生成的， 则使用JSON.parse(JSON.stringify(obj))深拷贝后，会丢弃对象的constructor；
6、如果对象中存在循环引用的情况也无法正确实现深拷贝；

*/
// let deepClone=function(obj){
//         let s1=JSON.stringify(obj);//将对象转换成json字符串
//         let s2=JSON.parse(s1);//将转换而来的字符串转换成原生js
//         return s2;
//   }
// let s3={
//     simon:{
//         age:20,
//         class:11
//     },
//     song:{
//         age:99,
//         class:20
//     }
// }
// let s4=deepClone(s3)
// console.log(s3);//
// console.log(s4);//
//  利用for in实现深拷贝
function deepClone(obj){
    let result=typeof obj.splice==="function" ? []:{}
    
}

</script>